Linear history through fast-forwarding is only possible when the branch history is a straight line of descendants. The moment the base branch and the feature branch diverge, the simple 'pointer move' of a fast-forward merge becomes mathematically impossible.
1. The Tangible Distinction
Fast-forward merges are not reflected in the project history. This means the branch's unique existence is effectively erased upon integration. In contrast, 3-way merges preserve the narrative of parallel work.
2. The Historian Principle
The permanent master branch acts as the historian for our entire project. It can only record what we allow it to see; when paths split, we are forced to create a new 'event'—a merge commit—to bridge the gap and reconcile two different realities that evolved simultaneously.
3. Detection of Divergence
Using git log --oneline, developers can visualize where the paths split. If 'master' has moved forward since you branched off, Git cannot slide the pointer forward without losing the new work on master.